@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo 🐬 启动Dolphin文档解析API服务
echo ================================

REM 检查Python版本
for /f "tokens=2" %%i in ('python --version 2^>^&1') do set python_version=%%i
echo ✅ Python版本: %python_version%

REM 检查是否存在虚拟环境
if exist "venv\Scripts\activate.bat" (
    echo 🔄 激活虚拟环境...
    call venv\Scripts\activate.bat
)

REM 检查依赖是否安装
echo 📦 检查依赖包...
python -c "import fastapi, uvicorn" 2>nul
if errorlevel 1 (
    echo ⚠️  检测到缺少依赖包，正在安装...
    pip install -r requirements.txt
)

REM 检查配置文件
echo ⚙️  检查配置文件...
if not exist "config\Dolphin.yaml" (
    echo ❌ 配置文件不存在: config\Dolphin.yaml
    pause
    exit /b 1
)

REM 检查模型文件
echo 🤖 检查模型文件...
if not exist "checkpoints\dolphin_model.bin" (
    echo ❌ 模型文件不存在: checkpoints\dolphin_model.bin
    echo 请确保已下载模型文件到checkpoints目录
    pause
    exit /b 1
)

if not exist "checkpoints\dolphin_tokenizer.json" (
    echo ❌ 分词器文件不存在: checkpoints\dolphin_tokenizer.json
    echo 请确保已下载分词器文件到checkpoints目录
    pause
    exit /b 1
)

REM 创建必要的目录
echo 📁 创建输出目录...
if not exist "temp_uploads" mkdir temp_uploads
if not exist "api_results" mkdir api_results

REM 检查端口是否被占用
set PORT=8000
netstat -an | find ":%PORT%" | find "LISTENING" >nul
if not errorlevel 1 (
    echo ⚠️  端口 %PORT% 已被占用，请选择其他端口或停止占用该端口的进程
    netstat -an | find ":%PORT%"
    pause
    exit /b 1
)

REM 检查GPU支持
echo 🎮 检查GPU支持...
python -c "import torch; print('CUDA可用:', torch.cuda.is_available())" 2>nul
python -c "import torch; print(f'GPU数量: {torch.cuda.device_count()}') if torch.cuda.is_available() else print('使用CPU模式')" 2>nul

echo.
echo 🚀 启动API服务器...
echo    服务地址: http://localhost:%PORT%
echo    API文档: http://localhost:%PORT%/docs
echo    健康检查: http://localhost:%PORT%/health
echo.
echo 按 Ctrl+C 停止服务
echo ================================

REM 启动服务
python api_server.py --host 0.0.0.0 --port %PORT%

pause